"""
Copyright 2012 Wieser Dietmar, Margit Mutschlechner.

This file is part of Multimedia Social Networking Platform.

Multimedia Social Networking Platform is free software: 
you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Multimedia Social Networking Platform is distributed
in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Multimedia Social Networking Platform.  
If not, see <http://www.gnu.org/licenses/>.

"""

import unittest
from msnp.persistence import PersistenceController
from msnp.service.network.model.PeerModel import PeerInfo
from msnp.service.network import AuthenticationValidator
from msnp.model import PTPModel


class AuthTest(unittest.TestCase):
    """class to test the authentication functionality"""
    def testAuthentication(self):
        """first register a user and than log in"""
        PersistenceController.initPTPDatabase(schema='user1')
        identity = PeerInfo(uname="newUserName", pwd="newPassword")
        errorCode = AuthenticationValidator.validateAuthentication(identity, False)
        self.assertEqual(errorCode, PTPModel.ReturnType.SUCCESSFUL)
        errorCode = AuthenticationValidator.validateAuthentication(identity, True)
        self.assertEqual(errorCode, PTPModel.ReturnType.SUCCESSFUL)
    
def suite():
    suite = unittest.TestSuite()
    suite.addTest(unittest.makeSuite(AuthTest))
    return suite

if __name__ == '__main__':
    suiteFew = unittest.TestSuite()
    suiteFew.addTest(AuthTest("testAuthentication"))
    unittest.TextTestRunner(verbosity=2).run(suite())
